﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Parallel
{
	/// <summary>
	/// 平行坐标系介绍
	/// <para>
	/// 平行坐标系（Parallel Coordinates）
	/// </para>
	/// <para>
	/// <see href="https://en.wikipedia.org/wiki/Parallel_coordinates"/> 是一种常用的可视化高维数据的图表
	/// </para>
	/// <para>
	/// 数据中，每一行是一个『数据项』，每一列属于一个『维度』
	/// </para>
	/// <para>
	/// （例如上面数据每一列的含义分别是
	/// </para>
	/// <para>
	/// 『日期』,『AQI指数』, 『PM2.5』, 『PM10』, 『一氧化碳值』, 『二氧化氮值』, 『二氧化硫值』）
	/// </para>
	/// <para>
	/// parallel.axisExpandable 来改善显示效果
	/// </para>
	/// </summary>
	public class Parallel
	{

		/// <summary>
		/// 组件 ID。默认不指定。指定则可用于在 option 或者 API 中引用组件。
		/// </summary>
		public dynamic id { get; set; } 

		/// <summary>
		/// 所有图形的 zlevel 值
		/// <para>
		/// zlevel用于 Canvas 分层，不同zlevel值的图形会放置在不同的 Canvas 中，Canvas 分层是一种常见的优化手段
		/// </para>
		/// <para>
		/// 我们可以把一些图形变化频繁（例如有动画）的组件设置成一个单独的zlevel
		/// </para>
		/// <para>
		/// 需要注意的是过多的 Canvas 会引起内存开销的增大，在手机端上需要谨慎使用以防崩溃
		/// </para>
		/// <para>
		/// zlevel 大的 Canvas 会放在 zlevel 小的 Canvas 的上面
		/// </para>
		/// </summary>
		public dynamic zlevel { get; set; }  = 0;

		/// <summary>
		/// 组件的所有图形的z值
		/// <para>
		/// 控制图形的前后顺序
		/// </para>
		/// <para>
		/// z值小的图形会被z值大的图形覆盖
		/// </para>
		/// <para>
		/// z相比zlevel优先级更低，而且不会创建新的 Canvas
		/// </para>
		/// </summary>
		public dynamic z { get; set; }  = 2;

		/// <summary>
		/// parallel 组件离容器左侧的距离
		/// <para>
		/// left 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 left, center, right
		/// </para>
		/// <para>
		/// 如果 left 的值为left, center, right，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic left { get; set; }  = 80;

		/// <summary>
		/// parallel 组件离容器上侧的距离
		/// <para>
		/// top 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比，也可以是 top, middle, bottom
		/// </para>
		/// <para>
		/// 如果 top 的值为top, middle, bottom，组件会根据相应的位置自动对齐
		/// </para>
		/// </summary>
		public dynamic top { get; set; }  = 60;

		/// <summary>
		/// parallel 组件离容器右侧的距离
		/// <para>
		/// right 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// </summary>
		public dynamic right { get; set; }  = 80;

		/// <summary>
		/// parallel 组件离容器下侧的距离
		/// <para>
		/// bottom 的值可以是像 20 这样的具体像素值，可以是像 20% 这样相对于容器高宽的百分比
		/// </para>
		/// </summary>
		public dynamic bottom { get; set; }  = 60;

		/// <summary>
		/// parallel 组件的宽度。默认自适应。
		/// </summary>
		public dynamic width { get; set; }  = "auto";

		/// <summary>
		/// parallel 组件的高度。默认自适应。
		/// </summary>
		public dynamic height { get; set; }  = "auto";

		/// <summary>
		/// horizontal。水平排布各个坐标轴。
		/// vertical。竖直排布各个坐标轴。
		/// </summary>
		public WUDI.ECharts.Parallel layout { get; set; }  = WUDI.ECharts.Parallel.horizontal;

		/// <summary>
		/// 维度比较多时，比如有 50+ 的维度，那么就会有 50+ 个轴
		/// <para>
		/// 那么可能会页面显示不下
		/// </para>
		/// <para>
		/// 可以通过 parallel.axisExpandable
		/// </para>
		/// <para>
		/// #parallel.axisExpandable 来改善显示效果
		/// </para>
		/// <para>
		/// 是否允许点击展开折叠 axis
		/// </para>
		/// </summary>
		public dynamic axisExpandable { get; set; }  = false;

		/// <summary>
		/// 初始时，以哪个轴为中心展开，这里给出轴的 index
		/// <para>
		/// 没有默认值，需要手动指定
		/// </para>
		/// <para>
		/// 参见 parallel.axisExpandable
		/// </para>
		/// <para>
		/// #parallel.axisExpandable
		/// </para>
		/// </summary>
		public dynamic axisExpandCenter { get; set; } 

		/// <summary>
		/// 初始时，有多少个轴会处于展开状态
		/// <para>
		/// 建议根据你的维度个数而手动指定
		/// </para>
		/// <para>
		/// 参见 parallel.axisExpandCenter
		/// </para>
		/// <para>
		/// #parallel.axisExpandCenter
		/// </para>
		/// <para>
		/// 参见 parallel.axisExpandable
		/// </para>
		/// <para>
		/// #parallel.axisExpandable
		/// </para>
		/// </summary>
		public dynamic axisExpandCount { get; set; }  = 0;

		/// <summary>
		/// 在展开状态，轴的间距是多少，单位为像素
		/// <para>
		/// 参见 parallel.axisExpandable
		/// </para>
		/// <para>
		/// #parallel.axisExpandable
		/// </para>
		/// </summary>
		public dynamic axisExpandWidth { get; set; }  = 50;

		/// <summary>
		/// click。鼠标点击的时候 expand。
		/// mousemove。鼠标悬浮的时候 expand。
		/// </summary>
		public dynamic axisExpandTriggerOn { get; set; }  = "click";

		/// <summary>
		/// 配置多个 parallelAxis
		/// <para>
		/// #parallelAxis，形成最终的坐标轴的配置
		/// </para>
		/// <para>
		/// 参见示例
		/// </para>
		/// <para>
		/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=doc-example/parallel-all&amp;edit=1&amp;reset=1"/>
		/// </para>
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.ParallelAxisDefault parallelAxisDefault { get; set; } 

	}
}